﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ISHotel.Database;

namespace ISHotel.presentation
{
    public partial class PobytDetail : System.Web.UI.Page
    {
        protected string id_pobytu;
        private bool pom_zaplaceno = false;
        protected void Page_Load(object sender, EventArgs e)
        {
            id_pobytu = Request.QueryString["id_pobytu"];
            LabelID_Pobytu2.Text = id_pobytu;
            PobytTable pobytTable = new PobytTable();
            Pobyt pobyt = pobytTable.Select(Int32.Parse(id_pobytu));
            LabelPrijezd2.Text = String.Format("{0:dd.MM.yyyy}", pobyt.prijezd);
            LabelOdjezd2.Text = String.Format("{0:dd.MM.yyyy}", pobyt.odjezd);
            LabelCena2.Text = pobyt.celkova_suma + " Kč";
            if (pobyt.zaplaceno == 1)
            {
                CheckBoxZaplaceno.Checked = true;
                pom_zaplaceno = true;
                ButtonFaktura.Enabled = true;

                Button1.Enabled = false;

                DetailsView1.Enabled = false;

            }
                

            
            ObjednavkaStravovaniTable objednavkaStravovaniTable = new ObjednavkaStravovaniTable();
            ObjednavkaStravovani objednavkaStravovani = objednavkaStravovaniTable.Select(pobyt.id_pobytu);
            StravovaniTable stravovaniTable = new StravovaniTable();
            Stravovani stravovani = stravovaniTable.Select(objednavkaStravovani.id_stravovani);
            LabelStravovani2.Text = stravovani.nazev_stravovani;
            LabelStravovani3.Text = stravovani.cena_stravovani.ToString() + " Kč/noc";
            TaxaTable taxaTable = new TaxaTable();
            Taxa taxa = taxaTable.Select(pobyt.id_taxy);
            LabelTaxa2.Text = taxa.nazev_taxy;
            LabelTaxa3.Text = taxa.cena_taxy.ToString() + " Kč/noc";
            
            ObjednavkaPokojeTable objednavkaPokojeTable = new ObjednavkaPokojeTable();
            ObjednavkaPokoje objednavkaPokoje = objednavkaPokojeTable.Select(pobyt.id_pobytu);
            PokojTable pokojTable = new PokojTable();
            Pokoj pokoj = pokojTable.Select(objednavkaPokoje.id_pokoje);
            LabelPokoj2.Text = pokoj.id_pokoje.ToString();
            LabelPokoj3.Text = pokoj.cena_pokoje.ToString() + " Kč/noc";

            SeznamHostuTable seznamHostuTable = new SeznamHostuTable();
            SeznamHostu seznamHostu = seznamHostuTable.Select(pobyt.id_pobytu);
            HostTable hostTable = new HostTable();
            Host host = hostTable.Select(seznamHostu.rodne_cislo);
            LabelHost2.Text = host.jmeno + " " + host.prijmeni;
            LabelHost3.Text = host.rodne_cislo;
            ODS_Sluzby.SelectParameters.Clear();
            ODS_Sluzby.SelectParameters.Add(new Parameter("id_pobytu", TypeCode.Int32, pobyt.id_pobytu.ToString()));
            ODS_Sluzby.Select();
        }

        protected void ButtonFaktura_Click(object sender, EventArgs e)
        {
            Response.Redirect(String.Format("DokladForm.aspx?id_pobytu={0}", id_pobytu) );
        }

        public void button_Command(object sender, CommandEventArgs e)
        {
            if (e.CommandName == "DeleteObjednavkuSluzby")
            {
                if (!pom_zaplaceno)
                {
                    ObjednavkaSluzbyTable delSourceRecord = new ObjednavkaSluzbyTable();
                    delSourceRecord.Delete(Convert.ToInt32(e.CommandArgument), Convert.ToInt32(id_pobytu));
                    GridViewSluzby.DataBind();
                    Response.Redirect(Request.RawUrl);    
                }
                else
                {
                    LabelErr.Text = "Pobyt je již zaplacen a uhrazen. Nelze editovat a mazat objednávky služeb.";
                }
                
            }
        }

        protected void SluzbyDetail_OnUpdated(object sender, ObjectDataSourceStatusEventArgs e)
        {
            GridViewSluzby.DataBind();
            DetailsView1.DataBind();
            Response.Redirect(Request.RawUrl);
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            ObjednavkaSluzby objednavkaSluzby = new ObjednavkaSluzby();
            objednavkaSluzby.id_pobytu = Int32.Parse(id_pobytu);
            objednavkaSluzby.id_sluzby = Convert.ToInt32(DropDownListNazevSluzby.SelectedValue);
            objednavkaSluzby.mnozstvi_sluzeb = Int32.Parse(TextBoxMnozstvi.Text);

            ObjednavkaSluzbyTable addSourceRecord = new ObjednavkaSluzbyTable();
            try
            {
                addSourceRecord.Insert(objednavkaSluzby);
                Response.Redirect(Request.RawUrl);
            }
            catch (Exception ex)
            {
                if (ex.Message.ToString().IndexOf("ORA-00001") >= 0) { LabelErr.Text = "Služba je již v objednávce, editujte počet služeb."; }
                else { LabelErr.Text = ex.Message.ToString(); };
            }
        }

        protected void ButtonZaplaceno_Click(object sender, EventArgs e)
        {
            PobytTable pobytTable = new PobytTable();
            if (CheckBoxZaplaceno.Checked)
                pobytTable.UpdateZaplaceno(Convert.ToInt32(id_pobytu), 1);
            else
            {
                pobytTable.UpdateZaplaceno(Convert.ToInt32(id_pobytu), 0);
            }

            Response.Redirect(Request.RawUrl);
        }

        protected void CheckBoxZaplaceno_CheckedChanged(object sender, EventArgs e)
        {
            //chbox.Checked = false;
            PobytTable pobytTable = new PobytTable();
            if (!pom_zaplaceno)
                pobytTable.UpdateZaplaceno(Convert.ToInt32(id_pobytu), 1);
            else
            {
                pobytTable.UpdateZaplaceno(Convert.ToInt32(id_pobytu), 0);
            }

            Response.Redirect(Request.RawUrl);
        }



    }
}